#ifndef USERMANAGEMENTWIDGET_H
#define USERMANAGEMENTWIDGET_H

#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QTableView>
#include <QStandardItemModel>
#include <QSqlQuery>
#include <QSqlError>
#include <QMessageBox>
#include <QDebug>
#include <QSqlTableModel>

// 添加UI头文件包含
#include "ui_usermanagementwidget.h"
#include "AuditLogger.h"  // 添加审计日志组件

class DatabaseHandler;

// 在类声明中添加前置声明
class EditUserDialog;  // 添加对话框前置声明

class UserManagementWidget : public QWidget {
    Q_OBJECT
public:
    explicit UserManagementWidget(QWidget *parent = nullptr);
    UserManagementWidget(DatabaseHandler *dbHandler, QWidget *parent = nullptr);
    ~UserManagementWidget();

public slots:
    void refreshUserList();

private:
    Ui::UserManagementWidget *ui;  // 现在可以正确识别UI类型
    QSqlTableModel *m_userModel;
    DatabaseHandler *m_dbHandler;
    AuditLogger* m_auditLogger; // 新增审计日志成员

    void setupUI();
    void setupConnections();
    void loadUsers();

private slots: // 确保槽声明符正确
    void onSearchButtonClicked();
    void onAddUserClicked();
    void onEditUserClicked();
    void onDeleteUserClicked();

    void logUserChange(const QString& action, const QVariantMap& oldData, 
                      const QVariantMap& newData, const QString& reason);
};

#endif // USERMANAGEMENTWIDGET_H